]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
keyboard: Handle edge drag gesture cancellation
authorCarlos Garnacho <carlosg@gnome.org>
Sun, 14 Feb 2021 09:26:38 +0000 (10:26 +0100)
committerMarge Bot <marge-bot@gnome.org>
Wed, 17 Feb 2021 15:45:01 +0000 (15:45 +0000)
Hide the keyboard again if the gesture happens to stay/return
within it's activation threshold.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1668>

js/ui/edgeDragAction.js
js/ui/keyboard.js

index 540ff4b9dd4118a435f70c8c004f4dac037f69fe..986b658e06872a946486530179a9556c195ac6df 100644 (file)
@@ -82,5 +82,7 @@ var EdgeDragAction = GObject.registerClass({
             (this._side == St.Side.LEFT && x > monitorRect.x + DRAG_DISTANCE) ||
             (this._side == St.Side.RIGHT && x < monitorRect.x + monitorRect.width - DRAG_DISTANCE))
             this.emit('activated');
+        else
+            this.cancel();
     }
 });
index 50a1cd7f445b4a627b1991adf8595863cf053b95..aae72b960f0be18dc707a9e79438101737459771 100644 (file)
@@ -1148,10 +1148,16 @@ var KeyboardManager = class KeyBoardManager {
         const mode = Shell.ActionMode.ALL & ~Shell.ActionMode.LOCK_SCREEN;
         const bottomDragAction = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM, mode);
         bottomDragAction.connect('activated', () => {
-            this._keyboard.gestureActivate(Main.layoutManager.bottomIndex);
+            if (this._keyboard)
+                this._keyboard.gestureActivate(Main.layoutManager.bottomIndex);
         });
         bottomDragAction.connect('progress', (_action, progress) => {
-            this._keyboard.gestureProgress(progress);
+            if (this._keyboard)
+                this._keyboard.gestureProgress(progress);
+        });
+        bottomDragAction.connect('gesture-cancel', () => {
+            if (this._keyboard)
+                this._keyboard.gestureCancel();
         });
         global.stage.add_action(bottomDragAction);
         this._bottomDragAction = bottomDragAction;
@@ -1844,6 +1850,7 @@ var Keyboard = GObject.registerClass({
     }
 
     gestureProgress(delta) {
+        this._gestureInProgress = true;
         Main.layoutManager.keyboardBox.show();
         let progress = Math.min(delta, this.height) / this.height;
         this.translation_y = -this.height * progress;
@@ -1856,6 +1863,13 @@ var Keyboard = GObject.registerClass({
 
     gestureActivate() {
         this.open(true);
+        this._gestureInProgress = false;
+    }
+
+    gestureCancel() {
+        if (this._gestureInProgress)
+            this.animateHide();
+        this._gestureInProgress = false;
     }
 
     resetSuggestions() {